下圖頁面有3個按鈕, 本篇文章會示範 使用5種不同的方法來添加按鈕點擊事件。
::
@Override
protected void onCreate(Bundle savedInstanceState) {
...
binding.btn1.setOnClickListener(this::method1);
binding.btn2.setOnClickListener(this::method2);
binding.btn3.setOnClickListener(this::method3);
}
private void method3(View view) {
// TODO
}
private void method2(View view) {
// TODO
}
private void method1(View view) {
// TODO
}
使用此方法必須把點擊後 要觸發的方法設為 "public"
public class MainActivity extends AppCompatActivity {
...
public void method3(View view) {
// TODO
}
public void method2(View view) {
// TODO
}
public void method1(View view) {
// TODO
}
}
然後在佈局上的按鈕, 添加android:onClick
屬性
在輸入的時候就會顯示上面寫的點擊事件方法
還可以細分為內部New、Lambda、外部New後再添加
// 3-1 內部new
binding.btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO
}
});
// 3-2 lambda
binding.btn2.setOnClickListener(view -> {
// TODO
});
// 3-3 外部new後再添加
View.OnClickListener add = new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO
}
};
binding.btn3.setOnClickListener(add);
主類(this) implemnts View.OnClickListener
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
...
@Override
protected void onCreate(Bundle savedInstanceState) {
...
binding.btn1.setOnClickListener(this);
binding.btn2.setOnClickListener(this);
binding.btn3.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_1:
// TODO method1
break;
case R.id.btn_2:
// TODO method2
break;
case R.id.btn_3:
// TODO method3
break;
default: break;
}
}
}
public class MainActivity extends AppCompatActivity {
...
@Override
protected void onCreate(Bundle savedInstanceState) {
...
MyOnClickListener myOnClickListener = new MyOnClickListener();
binding.btn1.setOnClickListener(myOnClickListener);
binding.btn2.setOnClickListener(myOnClickListener);
binding.btn3.setOnClickListener(myOnClickListener);
}
// 創建內部類實現onClickListener接口
private static class MyOnClickListener implements View.OnClickListener {
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_1:
// TODO method 1
break;
case R.id.btn_2:
// TODO method 2
break;
case R.id.btn_3:
// TODO method 3
break;
default: break;
}
}
}
}